package com.company.pedidos.web.controller;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;

import com.company.pedidos.domain.Usuario;
import com.company.pedidos.service.PedidosService;
import com.company.pedidos.web.command.LoginCommand;

@Controller
@SessionAttributes("usuario")
public class LoginController {
	private static final Logger logger = Logger
			.getLogger(LoginController.class);

	@Autowired
	private PedidosService pedidosService;

	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String inicio(ModelMap model) {
		logger.debug("Inicio Tomador Pedidos");
		model.addAttribute("loginCommand", new LoginCommand());
		return "login";
	}

	@RequestMapping(value = "/inicio", method = RequestMethod.POST)
	public ModelAndView inicioLogin(
			@ModelAttribute("loginCommand") LoginCommand loginCommand,
			ModelMap modelMap) {
		logger.debug("Inicio Login");
		modelMap.remove("mensajeLogin");
		ModelAndView modelAndView = new ModelAndView("login");
		String mensajeLogin = null;
		
		Usuario usuario = pedidosService.autorizarUsuario(
				loginCommand.getUsuario(), loginCommand.getPassword());
		
		if (usuario != null && usuario.getAccesoWeb() == 1) {
			modelAndView = new ModelAndView("inicio");
			modelAndView.addObject("usuario", usuario);
		} else {
			if (usuario == null) {
				mensajeLogin = "Usuario no registro!!";
			} else {
				if (usuario.getAccesoWeb() != 1) {
					mensajeLogin = "Usuario no tiene accesso web.";
				}
			}
		}

		logger.debug("usuario : " + loginCommand.getUsuario());
		logger.debug("password : " + loginCommand.getPassword());
		modelMap.addAttribute("mensajeLogin", mensajeLogin);
		return modelAndView;
	}

	@RequestMapping(value = "/salir", method = RequestMethod.GET)
	public String salir(ModelMap modelMap, SessionStatus session) {
		logger.debug("Salir Aplicacion");
		session.setComplete();
		modelMap.addAttribute("loginCommand", new LoginCommand());
		return "login";
	}
}
